/**
 * Importação das bibliotecas necessárias para a implementação da classe.
 */
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * 
 * Universidade de Brasília - Gama
 * Sistema de Análise de Investimentos de Bolsa de Valores - Projeto de Técnicas de Programação
 * @author Filipe Barbosa de Almeida - 09/0006097
 * @author Gabriela Matias Navarro - 09/0006526
 * @author Renato Guibson Girardi - 09/0013204
 */
public class Usuario {
    
        /**
     * Declarando os atributos da classe Usuario
     */	
	private String nome;
	private Date dataNascimento;
	private String sexo;
	private String estadoCivil;
	private Date dataCadastro;
	private ArrayList investimento;
	private String email;
	private Endereco end;
	
	/**
         * Método get para o atributo nome
         * @return nome
         */
	public String getNome() {
		return nome;
	}
        /**
         * Metodo set para o atributo nome
         * @param nome 
         */
	public void setNome(String nome) {
		this.nome = nome;
	}
        /**
         * Método get para o atributo dataNascimento
         * @return dataNascimento
         */
	public Date getDataNascimento() {
		return dataNascimento;
	}
        /**
         * Metodo set para o atributo dataNascimento
         * @param dataNascimento
         */
	public void setDataNascimento(Date dataNascimento) {
		this.dataNascimento = dataNascimento;
	}
        /**
         * Método get para o atributo sexo
         * @return sexo
         */
	public String getSexo() {
		return sexo;
	}
         /**
         * Metodo set para o atributo sexo
         * @param sexo 
         */
	public void setSexo(String sexo) {
		this.sexo = sexo;
	}
        /**
         * Método get para o atributo estadoCivil
         * @return estadoCivil
         */
	public String getEstadoCivil() {
		return estadoCivil;
	}
         /**
         * Metodo set para o atributo estacoCivil
         * @param estadoCivil
         */
	public void setEstadoCivil(String estadoCivil) {
		this.estadoCivil = estadoCivil;
	}
	/**
         * Método get para o atributo dataCadastro
         * @return dataCadastro
         */
	public Date getDataCadastro() {
		return dataCadastro;
	}
         /**
         * Metodo set para o atributo dataCadastro
         * @param dataCadastro
         */
	public void setDataCadastro(Date dataCadastro) {
		this.dataCadastro = dataCadastro;
	}
        /**
         * Método get para o atributo Investimento
         * @return Investimento
         */
	public ArrayList getInvestimento() {
		return investimento;
	}
         /**
         * Metodo set para o atributo investimento
         * @param investimento
         */
	public void setInvestimento(ArrayList investimento) {
		this.investimento = investimento;
	}
        /**
         * Método get para o atributo email
         * @return email
         */
	public String getEmail() {
		return email;
	}
         /**
         * Metodo set para o atributo email
         * @param email
         */
	public void setEmail(String email) {
		this.email = email;
	}
        /**
         * Método get para o atributo endereco
         * @return endereco
         */
	public Endereco getEnd() {
		return end;
	}
               
        /**
         * Metodo set para o atributo endereco
         * @param endereco
         */
	public void setEnd(Endereco end) {
		this.end = end;
	}


        /**
         * metodo construtor vazio
         */

        public Usuario(){

        }
        /**
         * Metodo construtor para:
         * @param nome
         * @param dataNascimento
         * @param sexo
         * @param estadoCivil
         * @param dataCadastro
         * @param investimento
         * @param email
         * @param end
         */
        public Usuario(String nome, Date dataNascimento, String sexo, String estadoCivil, Date dataCadastro, ArrayList investimento,
        String email, Endereco end ){
            /**
             * Instanciando os atributos da classe Usuario
             */
            this.nome = nome;
            this.dataNascimento = dataNascimento;
            this.sexo = sexo;
            this.estadoCivil = estadoCivil;
            this.dataCadastro = dataCadastro;
            this.investimento = investimento;
            this.email = email;
            this.end = end;

        }
        /**
	 *  Metodo para calcular a idade.
	 * @param dataNascimento
	 * @return calendario1.get(Calendar.YEAR) - calendario2.get(Calendar.YEAR)
	 */
	public static int CalcularIdade(Date dataNascimento){

		Date atual = new Date();
		Calendar calendario1 = Calendar.getInstance();
		Calendar calendario2 = Calendar.getInstance();
		calendario1.setTime(atual);
		calendario2.setTime(dataNascimento);

	return calendario1.get(Calendar.YEAR) - calendario2.get(Calendar.YEAR); // Retorna o valor em anos
	}
        /**
         * Metodo para calcular o tempo de cadastro
         * @param dataCadastro
         * @return calendario1.get(Calendar.MONTH) - calendario2.get(Calendar.MONTH);
         */
        public static double CalculoTempo(Date dataCadastro){

		Date atual = new Date();
		Calendar calendario1 = Calendar.getInstance();
		Calendar calendario2 = Calendar.getInstance();
		calendario1.setTime(atual);
		calendario2.setTime(dataCadastro);

		return calendario1.get(Calendar.MONTH) - calendario2.get(Calendar.MONTH); // Retorna o valor em meses. (Pode ser trocado)
	}
	
    
}
